'use strict'

process.chdir(__dirname)

const titbit=require("titbit");
const fs=require('fs');
const dbcfg=require('./dbconfig.js');
const pg=requrie('pg');

try{
    fs.accessSync('./images')
}catch(err){
    fs.mkdirSync('./images')
}

let psql=new pg.Pool(dbcfg)

let cert_path='/usr/local/cert'

const app=new titbit({
    //开启调试模式，若有错误会输出错误信息
    debug:true,
    cert:`${cert_path}/abc.hiehie.top.pem`,
    key:`${cert_path}/abc.hiehie.top.key`
})


//添加路由
app.get('/',async c=>{
    c.send('ok')
})

/**--------content路由------- */

//获取内容列表
app.get('/content',async c=>{

})

/**--------content路由------- */

//c.reply->response in HTTP/1.1
//c.reply->stream in HTTP/2
app.get('/content/:id', async c => {
    let sqltext = `SELECT * FROM content WHERE id=$1`

    let r = await psql.query(sqltext, [c.param.id])

    if(r.rowCount === 0){
        return c.status(404).send('content not found')
    }

    c.send(r.rows[0])
})


app.get('/upload',async c=>{
    //c.reply是响应对象，可写的流，
    //在HTTP/1.1中指向response，在HHTTP/2中指向http2stream
    await c.helper.pipe('./upload.html',c.reply)
})

app.post('/upload',async c=>{
    //根据name获取文件对象
    let f=c.getFile('image')

    if(!f){
        return c.status(400).send('image not found')
    }

    //根据传入的原始文件名生成唯一文件名，主要使用f.filename的扩展名。
    let fname=c.helper.makeName(f.filename)

    //移动文件到指定位置。
    await c.moveFile(f,`./images/${fname}`)

    c.send(fname)
})


// app.get('/static/*',async=>{//*可以是任意路径，无限深度

// })

 //返回图片数据
 app.get('/image/:name',async c=>{//:是固定路径，固定深度
     //c.param是一个对象，其中的key值是路有参数的名称
     let imgname=c.param.name;
     await c.helper.pipe(`./images/${imgname}`,c.reply);
})
//运行在1234窗口
app.run(1348)
